﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace MVC4WPF.Automation.Dialog
{
    /// <summary>
    /// Property bag class use to hold the common properties that are used on a project item dialog for MVC4WPF.
    /// </summary>
    public abstract class DialogBasePropertyBag : PropertyBagBase
    {
        protected DialogBasePropertyBag()
            : base()
        {
            //Intentinally Blank
        }

        #region Base properties used for all dialogs

        #region Property - DialogTitle

        /// <summary>
        ///Constant that holds the name of the property 'DialogTitle'
        /// </summary>
        public const string PropertyNameDialogTitle = "DialogTitle";

        /// <summary>
        ///Local variable for property DialogTitle
        /// </summary>
        private string _dialogTitle;

        /// <summary>
        /// The title of the dialog
        /// </summary>
        /// <remarks>
        /// This property supports INotifyPropertyChanged and INotifyPropertyChanging
        /// </remarks>
        public string DialogTitle
        {
            get
            {
                return _dialogTitle;
            }

            set
            {
                OnPropertyChanging(PropertyNameDialogTitle);

                _dialogTitle = value;

                OnPropertyChanged(PropertyNameDialogTitle);
            }
        }

        #endregion Property - DialogTitle

        #region Property - DialogImage

        /// <summary>
        ///Constant that holds the name of the property 'DialogImage'
        /// </summary>
        public const string PropertyNameDialogImage = "DialogImage";

        /// <summary>
        ///Local variable for property DialogImage
        /// </summary>
        private Image _dialogImage;

        /// <summary>
        /// The image that will be displayed in the dialog
        /// </summary>
        /// <remarks>
        /// This property supports INotifyPropertyChanged and INotifyPropertyChanging
        /// </remarks>
        public Image DialogImage
        {
            get
            {
                return _dialogImage;
            }

            set
            {
                OnPropertyChanging(PropertyNameDialogImage);

                _dialogImage = value;

                OnPropertyChanged(PropertyNameDialogImage);
            }
        }

        #endregion Property - DialogImage

        #region Property - ItemName

        /// <summary>
        ///Constant that holds the name of the property 'ItemName'
        /// </summary>
        public const string PropertyNameItemName = "ItemName";

        /// <summary>
        ///Local variable for property ItemName
        /// </summary>
        private string _itemName;

        /// <summary>
        /// Hold the name of the item if the dialog supports collecting the item name
        /// </summary>
        /// <remarks>
        /// This property supports INotifyPropertyChanged and INotifyPropertyChanging
        /// </remarks>
        public string ItemName
        {
            get
            {
                return _itemName;
            }

            set
            {
                OnPropertyChanging(PropertyNameItemName);

                _itemName = value;

                OnPropertyChanged(PropertyNameItemName);
            }
        }

        #endregion Property - ItemName

        #region Property - CancelName

        /// <summary>
        ///Constant that holds the name of the property 'CancelName'
        /// </summary>
        public const string PropertyNameCancelName = "CancelName";

        /// <summary>
        ///Local variable for property CancelName
        /// </summary>
        private string _cancelName;

        /// <summary>
        /// The text to be displayed in dialogs cancel button
        /// </summary>
        /// <remarks>
        /// This property supports INotifyPropertyChanged and INotifyPropertyChanging
        /// </remarks>
        public string CancelName
        {
            get
            {
                return _cancelName;
            }

            set
            {
                OnPropertyChanging(PropertyNameCancelName);

                _cancelName = value;

                OnPropertyChanged(PropertyNameCancelName);
            }
        }

        #endregion Property - CancelName

        #region Property - SelectName

        /// <summary>
        ///Constant that holds the name of the property 'SelectName'
        /// </summary>
        public const string PropertyNameSelectName = "SelectName";

        /// <summary>
        ///Local variable for property SelectName
        /// </summary>
        private string _selectName;

        /// <summary>
        /// The name to display in the select button of the dialog
        /// </summary>
        /// <remarks>
        /// This property supports INotifyPropertyChanged and INotifyPropertyChanging
        /// </remarks>
        public string SelectName
        {
            get
            {
                return _selectName;
            }

            set
            {
                OnPropertyChanging(PropertyNameSelectName);

                _selectName = value;

                OnPropertyChanged(PropertyNameSelectName);
            }
        }

        #endregion Property - SelectName


        #endregion
    }
}
